package com.itheima.book.manager.service;

import com.itheima.book.manager.dao.Book2Dao;
import com.itheima.book.manager.dao.BookDao;
import com.itheima.book.manager.domain.Book;

/**
 * 用来进行业务逻辑的处理(判断录入的bookId是否存在)，如果需要操作数据调用BookDao的方法获取数据
 */
public class BookService {

    // 调用BookDao中获取所有图书信息的方法
//    private BookDao bookDao = new BookDao() ;               // 为了让该类的所有的方法都可以进行访问
    private Book2Dao bookDao = new Book2Dao();

    /**
     * 1. 定义修改图书的方法(updateBookByBookId)，接收BookController传递过来的图书数据
     * 2. 在方法内部调用BookDao的方法完成图书信息的修改操作
     */
    public void updateBookByBookId(Book book) {
        bookDao.updateBookByBookId(book) ;
    }


    /**
     * 定义删除图书的方法deleteByBookId，在方法内部调用BookDao的方法完成图书的删除操作
     */
    public void deleteByBookId(String bookId) {
        bookDao.deleteByBookId(bookId);
    }


    /**
     * 定义查询所有图书信息方法，方法内部调用BookDao中的findAll方法完成图书信息的查询
     */
    public Book[] findAll() {
        Book[] books = bookDao.getAllBooks();
        return books;
    }



    /**
     * 1. 定义判断图书id是否存在的方法(isExistsBookId)
     * 2. 调用BookDao中获取所有图书信息的方法
     * 3. 遍历数组获取每一个图书信息
     * 4. 判断当前遍历的图书信息的id是否和用户录入的图书的id相同
     * 5. 如果相同就返回true，如果遍历完毕以后都没有返回true，最终就返回false
     */
    public boolean isExistsBookId(String bookId) {

        // 调用BookDao中获取所有图书信息的方法
        Book[] allBooks = bookDao.getAllBooks();

        // 遍历数组获取每一个图书信息
        for(int x = 0 ; x < allBooks.length ; x++) {
            Book bookArray = allBooks[x] ;
            if(bookArray != null) {
                if(bookArray.getBookId().equals(bookId)) {      // 判断当前遍历的图书信息的id是否和用户录入的图书的id相同
                    return true ;
                }
            }
        }

        // 返回false
        return false ;

    }

    // 定义方法(addBook)该方法主要调用BookDao的addBook方法，将数据添加到数组中
    public boolean addBook(Book book) {

        // 调用BookDao的addBook方法，将数据添加到数组中
//        BookDao bookDao = new BookDao();
        boolean result = bookDao.addBook(book);

        // 返回
        return result ;

    }



}
